package com.golddaymicromall.adapter;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.RadioButton;
import android.widget.TextView;

import com.bumptech.glide.Glide;
import com.golddaymicromall.activity.R;
import com.golddaymicromall.bean.ProductInfo;
import com.golddaymicromall.img.ImageLoad;
import com.golddaymicromall.model.HttpModel;

import java.util.List;

/**
 * Created by dawd on 2016/3/11.
 */
public class Sale_StoreUpgradeAdapter extends BaseAdapter {
    private List<ProductInfo> list;
    private Context ctx;
    private ImageLoad load;
    private OnMyCheckChangedListener mCheckChange;
    private int selectID;
    LayoutInflater layoutinflater;

    public Sale_StoreUpgradeAdapter(List<ProductInfo> list, Context ctx) {
        this.list = list;
        this.ctx = ctx;
    }

    @Override
    public int getCount() {
        return list.size();
    }

    @Override
    public Object getItem(int position) {
        return list.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    // 自定义的选中方法
    public void setSelectID(int position) {
        selectID = position;
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        final ViewHolder hold;
        View view = convertView;
        if (view == null) {
            hold = new ViewHolder();
            layoutinflater = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

            view = layoutinflater.inflate(R.layout.item_salestoreupgradle, null);
            hold.goodsImg = (ImageView) view.findViewById(R.id.UpPurchaseItem_Img1);
            hold.priceTv = (TextView) view.findViewById(R.id.UpPurchaseItem_PriceTv);
            hold.selectImg = (RadioButton) view.findViewById(R.id.upPurchaseItem_SelectImg);
            hold.titleTv = (TextView) view.findViewById(R.id.UpPurchaseItem_TitleTv);
            view.setTag(hold);

        } else {
            hold = (ViewHolder) view.getTag();

        }

        Glide.with(ctx)
                .load(new HttpModel().IMGURL+list.get(position).getImage())
                .into(hold.goodsImg);
        hold.priceTv.setText("￥" + list.get(position).getPrice());
        hold.titleTv.setText(list.get(position).getProductname());


        //核心方法，判断单选按钮被按下的位置与之前的位置是否相等，然后做相应的操作。
        if (selectID == position) {
            hold.selectImg.setChecked(true);
        } else {
            hold.selectImg.setChecked(false);
        }
        hold.selectImg.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                //这一句的意思跟下面的一样，不过这个是itemClick的点击监听，而下面的是RadioButton的点击监听。
                selectID = position;

                /**
                 * 在MyListView中使用mListViewAdapter.setOncheckChanged
                 * 来监听RadioButton的点击事件，（当然，首先要判空）
                 * 当我们按下单选按钮时，我们把按下的item的位置赋值给selectID
                 * ，然后在上面的if语句中判断当前点击的位置与selectID的位置
                 * 是否相等，如果不相等，那么说明按下了新的位置，那么就把原来位置上的选择取消掉，
                 * 在新的位置让单选按钮显示选中状态就可以了。
                 */
                if (mCheckChange != null)
                    mCheckChange.setSelectID(selectID);
            }
        });
        return view;
    }

    // 回调函数，很类似OnClickListener吧，呵呵
    public void setOncheckChanged(OnMyCheckChangedListener l) {
        mCheckChange = l;
    }

    // 回調接口
    public interface OnMyCheckChangedListener {
        void setSelectID(int selectID);
    }

    public static class ViewHolder {
        RadioButton selectImg;
        ImageView goodsImg;
        TextView titleTv;
        TextView priceTv;
    }
}
